# 闭包：嵌套内部函数，执行外层函数的输入函数,这里的 fn 输入的必须是函数，返回嵌套的内部函数内存地址
def dif_longer(fn):
    # 1. 嵌套内部函数
    def inner(*args, **kwargs):
        # 装饰器功能
        print(f"-- 打印日志{args},{kwargs} -- ")
        # 2. 引用且执行外层函数的输入参数
        return fn(*args, **kwargs)

    # 3. 返回嵌套的内部函数内存地址
    return inner


@dif_longer
def sum_numbers(*args, **kwargs):
    result = 0
    for i in args:
        result += i
    for i in kwargs.values():
        result += i
    print(result)
    return result


sum_numbers(1, 2, 3, 4, 5, 6, 7, 8, 9, a=1, b=2, c=3, d=4, e=5)
